package com.wdl.modules.myhouse.config;

import io.netty.util.concurrent.DefaultThreadFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.DefaultManagedAwareThreadFactory;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author 昏昏的君
 */
@Configuration
public class ThreadPoolConfig {

    @Bean
    public ThreadPoolExecutor threadPoolExecutor() {
        // 使用指定参数创建一个线程池
        return new ThreadPoolExecutor(
                4, // 最大核心线程数量
                16, // 最大线程数量 = 核心线程数量 + 临时线程数量
                1000, // 临时线程的最大空闲时间，超过这个时间将会被销毁
                TimeUnit.MILLISECONDS, // 时间单位
                new LinkedBlockingDeque<>(), // 任务队列的容器
                new DefaultManagedAwareThreadFactory() // 线程创建工厂类
        );
    }


}
